有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从csv文件中删除记录

我正在制作一个程序,将删除一个特定的记录,用户将输入一个特定的id。该记录将从名为数据库的现有csv文件中删除。csv和一个名为temp的临时文件。csv的创建有助于这一过程。代码已编译并运行,但当我输入要删除的id时,控制台会显示一个对话框,显示错误,但没有详细说明错误。可能是什么错误,如何解决

import java.io.*;
import java.util.*;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
import javax.swing.*;  

public class delete {
    public static Scanner x;
    public static void main(String[] args) {
        String filepath = "Database.csv";
        System.out.print("Enter the id you want to delete: ");
        Scanner sc = new Scanner(System.in);
        String removeTerm = sc.nextLine();
        removeRecord(filepath,removeTerm);

    }

    public static void removeRecord(String filepath, String removeTerm)
{
    String tempFile = "temp.csv";
    File oldFile = new File(filepath);
    File newFile = new File(tempFile);
  String id=""; String fn=""; String ln=""; String sl=""; String lc="";
  try{ 
    FileWriter fw = new FileWriter(tempFile,true);
    BufferedWriter bw = new BufferedWriter(fw);
    PrintWriter pw= new PrintWriter(bw);
    x = new Scanner(new File(filepath));
    x.useDelimiter("[,\n]");
    while(x.hasNext())
    {
        id = x.next();
        fn = x.next();
        ln = x.next();
        sl = x.next();
        lc = x.next();
        if(!id.equals(removeTerm))
        {
                pw.println(id + "," + fn + "," + ln + "," + sl + "," + lc);

        }
    }
    x.close();
    pw.flush();
    pw.close();
    oldFile.delete();
    File dump = new  File(filepath);
    newFile.renameTo(dump);
  }


    catch(Exception e){
             JOptionPane.showMessageDialog(null,"Error");
        }
  }
}

共 (1) 个答案

  1. # 1 楼答案

    如果打印异常,您可以看到可能是什么错误:

    • 将堆栈跟踪打印到System.err

      } catch (Exception e) {
      
          e.printStackTrace(System.err);
      }
      
    • 使用JOptionPane,将异常打印到那里:

      } catch (Exception e) {
      
          String message = "Message: " + e.getMessage()
                  + "\nStackTrace: " + java.util.Arrays.toString(e.getStackTrace());
          String title = e.getClass().getName();
          JOptionPane.showMessageDialog(null, message, title, JOptionPane.ERROR_MESSAGE);
      }
      

    我想你知道自己的问题后就能解决